package com.ruoyi.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.*;
import com.ruoyi.common.pojo.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;

/**
 * @author syj
 * @description 针对表【sys_task(任务表)】的数据库操作Service
 * @createDate 2022-08-23 14:32:36
 */
public interface SysTaskService extends IService<SysTask> {

    AjaxResult changeBoatDirection(BoatDirectionParam param);

    AjaxResult switchTaskModel(SysTask param);

    AjaxResult createTask(SysTask param);

    AjaxResult closeTask(SysTask param);

    AjaxResult switchPlanRoute(SwitchPlanRouteReq param);

    AjaxResult uploadTrack(SysTaskRoute param);

    AjaxResult addIssue(SysTaskIssue param);

    AjaxResult getIssue(GetTaskIssueReq param);

    AjaxResult deleteIssue(Long issueId);

    AjaxResult updateIssue(SysTaskIssue param);

    AjaxResult getIssueTypeList();

    AjaxResult uploadFile(MultipartFile file, Integer type);

    AjaxResult getFile(Long id);

    AjaxResult deleteTrack(SysTask param);

    AjaxResult deleteFile(SysTaskFile param);

    AjaxResult queryTaskList(QueryTaskListReq param);

    AjaxResult getTaskRoute(SysTask param);

    AjaxResult getTaskList(GetTaskListReq param);

    /**
     * 启动河长巡河
     *
     * @param param
     * @return
     */
    AjaxResult startUserPatrolRiver(StartUserPatrolRiverReq param);

    /**
     * 暂停巡河
     *
     * @param param
     * @return
     */
    AjaxResult pauseUserPatrolRiver(PauseUserPatrolRiverReq param);

    /**
     * 恢复巡河
     *
     * @param param
     * @return
     */
    AjaxResult restoreUserPatrolRiver(PauseUserPatrolRiverReq param);

    /**
     * 停止巡河
     *
     * @param param
     * @return
     */
    AjaxResult stopUserPatrolRiver(PauseUserPatrolRiverReq param);

    /**
     * 巡河内容-添加巡河记录
     *
     * @param param
     * @return
     */
    AjaxResult addUserPatrolRiverRecord(@RequestBody AddUserPatrolRiverRecordReq param);

    /**
     * 查询巡河记录详情
     *
     * @param id
     * @return
     */
    AjaxResult getUserPatrolRiverRecordDetail(Long id);

    /**
     * @param issuestate 0：待处理；1：已处理，不传查全部
     * @param pageNum    当前记录起始索引
     * @param pageSize   每页显示记录数
     * @return
     */
    AjaxResult getMyUserPatrolRiverRecord(Integer issuestate, Integer pageNum, Integer pageSize);

    /**
     * 巡河内容-综合巡河记录
     * @param issuestate
     * @param startTime
     * @param endTime
     * @param keywords
     * @param pageNum
     * @param pageSize
     * @return
     */
    AjaxResult searchUserPatrolRiverRecord(Integer issuestate, Date startTime, Date endTime, String keywords, Integer pageNum, Integer pageSize);

    /**
     * 巡河内容-编辑巡河记录
     * @param param
     * @return
     */
    AjaxResult editUserPatrolRiverRecord(EditUserPatrolRiverRecordReq param);

    /**
     * 巡河内容-删除巡河记录
     * @param param
     * @return
     */
    AjaxResult deleteUserPatrolRiverRecord(DeleteUserPatrolRiverRecordReq param);

    /**
     * 查询巡河轨迹
     * @param param
     * @return
     */
    AjaxResult getTaskPatrolRiverRoute(GetTaskPatrolRiverRouteReq param);

    /**
     * 巡河内容-查询我的巡河记录
     * @param param
     * @return
     */
    AjaxResult getMyUserPatrolRiver(GetMyUserPatrolRiverReq param);

    /**
     * 巡河任务-查询巡河任务详情
     * @param param
     * @return
     */
    AjaxResult getPatrolRiverTaskDetail(GetPatrolRiverTaskDetailReq param);
}
